package cn.wolfcode.business.service;

import cn.wolfcode.business.domain.BusBpmnInfo;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * 流程定义明细Service接口
 * 
 * @author wolfcode
 * @date 2025-08-26
 */
public interface IBusBpmnInfoService 
{
    /**
     * 查询流程定义明细
     * 
     * @param id 流程定义明细主键
     * @return 流程定义明细
     */
    public BusBpmnInfo selectBusBpmnInfoById(Long id);

    /**
     * 查询流程定义明细列表
     * 
     * @param busBpmnInfo 流程定义明细
     * @return 流程定义明细集合
     */
    public List<BusBpmnInfo> selectBusBpmnInfoList(BusBpmnInfo busBpmnInfo);

    /**
     * 新增流程定义明细
     * 
     * @param busBpmnInfo 流程定义明细
     * @return 结果
     */
    public int insertBusBpmnInfo(BusBpmnInfo busBpmnInfo);

    /**
     * 修改流程定义明细
     * 
     * @param busBpmnInfo 流程定义明细
     * @return 结果
     */
    public int updateBusBpmnInfo(BusBpmnInfo busBpmnInfo);

    /**
     * 撤销流程定义明细
     * 
     * @param ids 需要删除的流程定义明细主键集合
     * @return 结果
     */
    public int deleteBusBpmnInfoByIds(Long[] ids);

    /**
     * 删除流程定义明细信息
     * 
     * @param id 流程定义明细主键
     * @return 结果
     */
    public int deleteBusBpmnInfoById(Long id);

    /**
     * 部署方法
     * @param file 文件
     * @param bpmnType 类型
     * @param info 信息
     * @return 成功||失败
     */
    int deploy(MultipartFile file, Integer bpmnType, String info) throws IOException;

    /**
     * 查看流程资源
     * @param id bpmnId
     * @param type 查询类型
     * @return 数据流
     */
    InputStream readResources(Long id, String type);

    /**
     * 根据 bpmn_type 查询 bpmnInfo 对象
     * @param flowAuditType bpmn_type
     * @return bpmnInfo 对象
     */
    BusBpmnInfo selectBpmnInfoByType(Integer flowAuditType);
}
